package com.Mt.Controller;

import com.Mt.Dto.Dto;
import com.Mt.Service.MtInviteService;
import com.Mt.Service.Mt_UserService;
import com.Mt.Utils.DtoUtil;
import com.Mt.pojo.MtInvite;
import com.Mt.pojo.Mt_User;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("invite")
public class MtInviteController {

    @Reference
    private MtInviteService mtInviteService;

    @Reference
    private Mt_UserService mtUserService;

    // 好友助力
    @GetMapping("user/{userId}/{inviteId}")
    public Dto user(@PathVariable String userId, @PathVariable String inviteId){
        // 根据获取到的userID查询用户表，是查询不到数据
        // 那就是新用户，查询到数据，就不是新用户
        if(mtUserService.queryByopenId(userId) != null){
            return DtoUtil.returnError(2001,"您不是新用户");
        }else{
            // 是新用户可以助力

            // 把当前邀请多少人查询到
            MtInvite mtInvite = mtInviteService.queryById(inviteId);
            // 当前邀请人数+1
            mtInvite.setInviter(mtInvite.getInviter() + 1);
            // 修改获得奖励次数
            int reward = mtInvite.getInviter() / 3;
            mtInvite.setReward(reward);
            if (mtInviteService.upd(mtInvite) > 0) {
                return DtoUtil.returnSuccessData("助力成功");
            }else{
                return DtoUtil.returnError(4001,"系统异常");
            }
        }
    }
    // 添加新用户(新用户助力之后把他添加到数据库中)
    @PostMapping("add")
    public Dto add(@RequestBody Mt_User mtUser){
        if(mtUserService.add(mtUser) > 0){
            return DtoUtil.returnSuccessData("添加成功");
        }else{
            return DtoUtil.returnError(5002,"系统异常");
        }
    }

    // 查询自己,已邀请多少人数
    @GetMapping("queryAll/{openId}")
    public Dto queryAll(@PathVariable String openId){
        if(openId == null || openId.equals("undefined")){
            return DtoUtil.returnError(3001,"系统异常");
        }
        MtInvite mtInvite = mtInviteService.queryById(openId);
        if(mtInvite != null){
            // 查询到数据，返回查询到的数据
            return DtoUtil.returnSuccessData(mtInvite);
        }else{
            // 查询不到，但他已经是我的用户
            MtInvite m = new MtInvite();
            m.setUserId(openId);
            // 刚开始邀请的人数是0
            m.setInviter(0);
            if(mtInviteService.add(m) > 0){
                return DtoUtil.returnSuccessData(mtInviteService.queryById(openId));
            }else{
                return DtoUtil.returnError(5001,"系统错误");
            }
        }
    }
    // 修改用户分享次数
    @GetMapping("updShare/{userId}")
    public Dto updShare(@PathVariable String userId){
        // 根据ID查询该用户分享助力所有信息
        MtInvite mtInvite = mtInviteService.queryById(userId);
        // 把分享次数取出加1
        mtInvite.setShare(mtInvite.getShare()+1);
        // 修改分享次数
        if(mtInviteService.updShare(mtInvite) > 0){
            return DtoUtil.returnSuccessData("修改成功");
        }else{
            return DtoUtil.returnError(3002,"系统错误");
        }
    }


}
